Software Defined Networking (SDN) is an approach to computer networking that allows network administrators to manage network services through abstraction of higher-level functionality. This is done by decoupling the system that makes decisions about where traffic is sent (the control plane) from the underlying systems that forward traffic to the selected destination (the data plane). In addition to SDN, networks are moving towards the use of Virtualized Network Functions (VNFs) and the like. As part of VNFs, cloud-based networking, and the like, software containers and the like are downloaded over networks. A software container includes an entire runtime environment, namely an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it, bundled into one package. Conventional techniques for distribution of software containers or other images include downloading an image's layers first and depending on processor resources, downloading the image's layers in parallel, once all layers are downloaded, the layers are extracted (uncompressed), and finally, once all layers are extracted, the image is ready to run. These conventional techniques do not take into account a state of network resources between a container service cloud and image registries. Once there is congestion in the network resources, the parallel downloads are slowed down regardless of the amount of remaining download size.